home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
inet
/
internet-drafts
/
draft-ietf-avt-rtp-03.txt
< prev
next >
Wrap
Text File
|
1993-09-15
|
90KB
|
2,087 lines
Internet Engineering Task Force Audio-Video Transport WG
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt H. Schulzrinne/S. Casner
AT&T/ISI
September 15, 1993
Expires: 11/01/93
RTP: A Transport Protocol for Real-Time Applications
Status of this Memo
This document is an Internet Draft. Internet Drafts are working documents
of the Internet Engineering Task Force (IETF), its Areas, and its Working
Groups. Note that other groups may also distribute working documents as
Internet Drafts.
Internet Drafts are draft documents valid for a maximum of six months.
Internet Drafts may be updated, replaced, or obsoleted by other documents
at any time. It is not appropriate to use Internet Drafts as reference
material or to cite them other than as a ``working draft'' or ``work in
progress.''
Please check the I-D abstract listing contained in each Internet Draft
directory to learn the current status of this or any other Internet Draft.
Distribution of this document is unlimited.
Abstract
This memorandum describes a protocol called RTP suitable for the
end-to-end network transport of real-time data, such as audio,
video or simulation data for both multicast and unicast transport
services. The data transport is augmented by a control protocol
(RTCP) designed to provide minimal control and identification
functionality particularly in multicast networks. RTP and RTCP are
designed to be independent of the underlying transport and network
layers. The protocol supports the use of RTP-level translators and
bridges. Within multicast associations, sites can direct control
messages to individual sites. The protocol does not address
resource reservation and does not guarantee quality-of-service for
real-time services.
This specification is a product of the Audio-Video Transport working group
within the Internet Engineering Task Force. Comments are solicited and
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
should be addressed to the working group's mailing list at rem-conf@es.net
and/or the authors.
Contents
1 Introduction 3
2 RTP Protocol Use Scenarios 5
2.1 Simple Multicast Audio Conference . . . . . . . . . . . . . . . . . 5
2.2 Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Translators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Definitions 7
4 Byte Order, Alignment, and Reserved Values 10
5 Real-Time Data Transfer Protocol -- RTP 10
5.1 RTP Fixed Header Fields . . . . . . . . . . . . . . . . . . . . . . 10
5.2 The RTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2.1CSRC: Content source identifiers . . . . . . . . . . . . . . . . 13
5.2.2SSRC: Synchronization source identifier . . . . . . . . . . . . 13
5.2.3BOS: Beginning of synchronization unit . . . . . . . . . . . . . 14
5.3 Reverse-Path Option . . . . . . . . . . . . . . . . . . . . . . . . 14
5.3.1SDST: Synchronization destination identifier . . . . . . . . . . 15
5.4 Security Options . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.4.1ENC: Encryption . . . . . . . . . . . . . . . . . . . . . . . . 18
5.4.2MIC: Messsage integrity check . . . . . . . . . . . . . . . . . 19
5.4.3MICA: Message integrity check, asymmetric encryption . . . . . . 20
5.4.4MICK: Message integrity check, keyed . . . . . . . . . . . . . . 21
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 2]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
5.4.5MICS: Message integrity check, symmetric-key encrypted . . . . . 22
6 Real Time Control Protocol --- RTCP 22
6.1 FMT: Format description . . . . . . . . . . . . . . . . . . . . . . 23
6.2 SDES: Source descriptor . . . . . . . . . . . . . . . . . . . . . . 24
6.3 BYE: Goodbye . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.4 QOS: Quality of service measurement . . . . . . . . . . . . . . . . 27
7 Security Considerations 28
8 RTP over Network and Transport Protocols 29
8.1 Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.2 ST-II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
A Implementation Notes 30
A.1 Timestamp Recovery . . . . . . . . . . . . . . . . . . . . . . . . 31
A.2 Detecting the Beginning of a Synchronization Unit . . . . . . . . . 32
A.3 Demultiplexing and Locating the Synchronization Source . . . . . . 33
A.4 Parsing RTP Options . . . . . . . . . . . . . . . . . . . . . . . . 33
A.5 Determining the Expected Number of RTP Packets . . . . . . . . . . 34
B Addresses of Authors 35
1 Introduction
This memorandum specifies a transport protocol for real-time applications.
A discussion of real-time services and algorithms for their implementation
and some of the RTP design decisions can be found in the current version
of the companion Internet draft draft-ietf-avt-issues. The transport
protocol provides end-to-end delivery services for data with real-time
characteristics, for example, interactive audio and video. RTP itself
does not provide any mechanism to ensure timely delivery or provide other
quality-of-service guarantees, but relies on lower-layer services to do so.
It does ___ guarantee delivery or prevent out-of-order delivery, nor does
it assume that the underlying network is reliable and delivers packets in
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 3]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
sequence. The sequence numbers included in RTP allow the end system to
reconstruct the sender's packet sequence, but sequence numbers might also
be used to determine the proper location of a packet, for example in video
decoding, without necessarily decoding packets in sequence. RTP does not
provide quality-of-service guarantees. RTP is designed to run on top of
a variety of network and transport protocols, for example, IP, ST-II or
UDP.(1) RTP transfers data in a single direction, possibly to multiple
destinations if supported by the underlying network. A mechanism for
sending control data in the opposite direction, reversing the path traversed
by regular data, is provided.
While RTP is primarily designed to satisfy the needs of multi-participant
multimedia conferences, it is not limited to that particular application.
Storage of continuous data, interactive distributed simulation, active
badge, and control and measurement applications may also find RTP
applicable. Profiles are used to instantiate certain header fields and
options for particular sets of applications. A profile for audio and video
data may be found in the companion Internet draft draft-ietf-avt-profile.
The current Internet does not support the widespread use of real-time
services. High-bandwidth services using RTP, such as video, can
potentially seriously degrade other network services. Thus, implementors
should take appropriate precautions to limit accidental bandwidth usage.
Application documentation should clearly outline the limitations and
possible operational impact of high-bandwidth real-time services on the
Internet and other network services.
This document defines a packet format shared by two protocols:
o the real-time transport protocol (RTP), for exchanging data that hs
real-time properties. The RTP header consists of a fixed-length
portion plus optional control fields;
o the RTP control protocol (RTCP), for conveying information about the
participants in an on-going session. RTCP consists of additional
header options that may be ignored without affecting the ability to
receive data correctly. RTCP is used for ``loosely controlled''
sessions, i.e., where there is no explicit membership control and
set-up. Its functionality may be subsumed by a session control
protocol, which is beyond the scope of this document.
------------------------------
1. For most applications, RTP offers insufficient demultiplexing to run
directly on IP.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 4]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
2 RTP Protocol Use Scenarios
The following sections describe some aspects of the use of RTP. The examples
were chosen to illustrate the basic operation of applications using RTP,
not to limit what RTP may be used for. In these examples, RTP is
carried on top of IP and UDP, and follows the conventions established by
the profile for audio and video specified in the companion Internet draft
draft-ietf-avt-profile.
2.1 Simple Multicast Audio Conference
A working group of the IETF meets to discuss the latest protocol draft,
using the IP multicast services of the Internet for voice communications.
Through some allocation mechanism, the working group chair obtains a
multicast group address; all participants use the destination UDP port
specified by the profile. The multicast address and port are distributed,
say, by electronic mail, to all intended participants. The mechanisms for
discovering available multicast addresses and distributing the information
to participants are beyond the scope of RTP.
The audio conferencing application used by each conference participant sends
audio data in small chunks of, say, 20 ms duration. Each chunk of audio
data is preceded by an RTP header; RTP header and data are in turn contained
in a UDP packet. The Internet, like other packet networks, occasionally
loses and reorders packets and delays them by variable amounts of time. To
cope with these impairments, the RTP header contains timing information and
a sequence number that allow the receivers to reconstruct the timing seen
by the source, so that, in our case, a chunk of audio is delivered to the
speaker every 20 ms. The sequence number can also be used by the receiver
to estimate how many packets are being lost. Each RTP packet also indicates
what type of audio encoding (such as PCM, ADPCM or GSM) is being used,
so that senders can change the encoding during a conference, for example,
to accommodate a new participant that is connected through a low-bandwidth
link.
Since members of the working group join and leave during the conference, it
is useful to know who is participating at any moment. For that purpose,
each instance of the audio application in the conference periodically
multicasts the name, email address and other information of its user. Such
control information is carried as RTCP SDES options within RTP messages,
with or without audio data (see Section 6.2). These periodic messages
also provide some indication as to whether the network connection is still
functioning. A site sends the RTCP BYE (Section 6.3) option when it
leaves a conference. The RTCP QOS (Section 6.4) option indicates how well
the current speaker is being received and may be used to control adaptive
encodings.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 5]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
2.2 Bridges
So far, we have assumed that all sites want to receive audio data in the
same format. However, this may not always be appropriate. Consider
the case where participants in one area are connected through a low-speed
link to the majority of the conference participants, who enjoy high-speed
network access. Instead of forcing everyone to use a lower-bandwidth,
reduced-quality audio encoding, a ______ is placed near the low-bandwidth
area. This bridge resynchronizes incoming audio packets to reconstruct the
constant 20 ms spacing generated by the sender, mixes these reconstructed
audio streams, translates the audio encoding to a lower-bandwidth one and
forwards the lower-bandwidth packet stream to the low-bandwidth sites.
After the mixing, the identity of the high-speed site that is speaking can
no longer be determined from the network origin of the packet. Therefore,
the bridge inserts a CSRC option (Section 5.2.1) into the packet containing
a list of short site identifiers to indicate which site(s) ``contributed''
to that mixed packet. An example of this is shown for bridge B1 in Fig. 1.
As name and location information is received by the bridge in SDES options
from the high-speed sites, that information is passed on to the receivers
along with a mapping to the CSRC identifiers.
[E1] [E6]
| |
E1:17 | E6:15 |
| | E6:63/6
V B1:48 (1,2) B1:28/1 (1,2) V B1:63/5 (1,2)
(B1)-------------><T1>-----------------><T2>--------------->[E7]
^ ^ E4:28/2 ^ E4:63/3
E2:1 | E4:47 | | B3:63/4 (1,4)
| | |
[E2] [E4] |
| LEGEND:
[E3] --------->(B2)----------->(B3)------------| [End system]
E3:64 B2:12 (3) ^ (Bridge)
| E5:45 <Translator>
|
[E5] content: source port/SSRC (CSRCs)
-------------------------------->
Figure 1: Sample RTP network with end systems, bridges and translators
2.3 Translators
Not all sites are directly accessible through IP multicast. For these
sites, mixing may not necessary, but a translation of the underlying
transport protocol is. RTP-level gateways that do not restore timing or
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 6]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
mix packets from different sources are called ___________ in this document.
Application-level firewalls, for example, will not let any IP packets pass.
Two translators are installed, one on either side of the firewall, the
outside one funneling all multicast packets received through the secure
connection to the translator inside the firewall. The translator inside
the firewall sends them again as multicast packets to a multicast group
restricted to the site's internal network. Other examples include the
connection of a group of hosts speaking only IP/UDP to a group of hosts that
understand only ST-II.
After RTP packets have passed through a translator, they all carry the
network source address of the translator, making it impossible for the
receiver to distinguish packets from different speakers based on network
source addresses. Since each sending site has its own sequence number
space and slightly offset timestamp space, the receiver could not properly
mix the audio packets. (For video, it could not properly separate them
into distinct displays.) Instead of forcing all senders to include some
globally unique identifier in each packet, a translator inserts an SSRC
option (Section 5.2.2) with a short identifier for the source that is
locally unique to the translator. This also works if an RTP packet has to
travel through several translators, with the SSRC value being mapped into a
new locally unique value at each translator. An example is shown in Fig. 1,
where hosts T1 and T2 are translators. The RTP packets from host E4 are
identified with SSRC value 2, while those coming from bridge B1 are labeled
with SSRC value 1. Similarly, translator T2 labels packets from E6, B1, E4
and B3 with SSRC values 6, 5, 3 and 4, respectively (or some other unique
values).
2.4 Security
Conference participants would often like to ensure that nobody else can
listen to their deliberations. Encryption, indicated by the presence of the
ENC option (Section 5.4.1), provides that privacy. The encryption method
and key can be changed during the conference by indexing into a table. For
example, a meeting may go into executive session, protected by a different
encryption key accessible only to a subset of the meeting participants.
For authentication, a number of methods are provided, depending on needs and
computational capabilities. All these message integrity check (MIC) options
(Sections 5.4.3 and following) compute cryptographic checksums, also known
as message digests, over the RTP data.
3 Definitions
_______ is the data following the RTP fixed header and the RTP/RTCP options.
The payload format and interpretation are beyond the scope of this memo.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 7]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
RTP packets without payload are valid. Examples of payload include audio
samples and video data.
An ___ ______ consists of the encapsulation specific to a particular
underlying protocol, the fixed RTP header, RTP and RTCP options (if any) and
the payload, if any. A single packet of the underlying protocol may contain
several RTP packets if permitted by the encapsulation method.
A __________ ____ is the ``abstraction that transport protocols use to
distinguish among multiple destinations within a given host computer.
TCP/IP protocols identify ports using small positive integers.'' [1] The
transport selectors (TSEL) used by the OSI transport layer are equivalent to
ports.
A _________ _______ denotes the combination of network address, e.g., the
4-octet IP Version 4 address, and the transport protocol port, e.g., the UDP
port. In OSI systems, the transport address is called transport service
access point or TSAP. The destination transport address may be a unicast or
multicast address.
A _______ ______ is the actual source of the data carried in an RTP
packet, for example, the application that originally generated some audio
data. Data from one or more content sources may be combined into a single
RTP packet by a bridge, which becomes the synchronization source (see next
paragraph). Content sources identify the logical source of the data, for
example, to highlight the current speaker in an audio conference; they have
no effect on the delivery or playout timing of the data itself. In Fig. 1,
E1 and E2 are the content sources of the data received by E7 from bridge B1,
while B1 is the synchronization source.
A _______________ ______ is the combination of one or more content sources
with its own timing. Each synchronization source has its own sequence
number space. The audio coming from a single microphone and the video
from a camera are examples of synchronization sources. The receiver
groups packets by synchronization source for playback. Typically a single
synchronization source emits a single medium (e.g., audio or video). A
synchronization source may change its data format, e.g., audio encoding,
over time. Synchronization sources are identified by their transport
address and the identifier carried in the SSRC option. If the SSRC option
is absent, a value of zero is assumed for that identifier.
A _________ ______ is the transport-level origin of the RTP packets as seen
by the receiving end system. In Fig. 1, host T2, port 63 is the transport
source of all packets received by end system E7.
A _______ comprises all synchronization sources sending to the same
destination transport address using the same RTP channel identifier.
An ___ ______ generates the content to be sent in RTP packets and consumes
the content of received RTP. An end system can act as one or more
synchronization sources. (Most end systems are expected to be a single
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 8]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
synchronization source.)
An (RTP-level) ______ receives RTP packets from one or more sources,
combines them in some manner and then forwards a new RTP packet. A bridge
may change the data format. Since the timing among multiple input sources
will not generally be synchronized, the bridge will make timing adjustments
among the streams and generate its own timing for the combined stream.
Therefore, bridges are synchronization sources, with each of the sources
whose packets were combined into an outgoing RTP packet as the content
sources for that outgoing packet. Audio bridges and media converters are
examples of bridges. In Fig. 1, end systems E1 and E2 use the services of
bridge B1. B1 inserts CSRC identifiers for E1 and E2 when they are active
(e.g., talking in an audio conference). The RTP-level bridges described in
this document are unrelated to the data link-layer bridges found in local
area networks. If there is possibility for confusion, the term 'RTP-level
bridge' should be used. The name bridge follows common telecommunication
industry usage.
An (RTP-level) __________ forwards RTP packets, but does not alter their
sequence numbers or timestamps. Examples of its use include encoding
conversion without mixing or retiming, conversion from multicast to unicast,
and application-level filters in firewalls. A translator is neither a
synchronization nor a content source. The properties of bridges and
translators are summarized in Table 1. Checkmarks in parentheses designate
possible, but unlikely actions. The options are explained in Sections 5.2,
the RTCP options in Section 6.
end sys. bridge translator
mix sources -- x --
change encoding N/A x x
encrypt x x (x)
sign for authentication x x --
alter content x x x
insert CSRC (RTP) -- x --
insert SSRC (RTP) x x x
insert SDST (RTP) x x --
insert SDES (RTCP) x x --
Table 1: The properties of end systems, bridges and translators
A _______________ ____ consists of one or more packets that are emitted
contiguously by the sender. The most common synchronization units are
talkspurts for voice and frames for video transmission. During playout
synchronization, the receiver must reconstruct exactly the time difference
between packets within a synchronization unit. The time difference between
synchronization units may be changed by the receiver to compensate for clock
drift or to adjust to changing network delay jitter. For example, if audio
packets are generated at fixed intervals during talkspurts, the receiver
has to play back packets with exactly the same spacing. However, if, for
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 9]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
example, a silence period between synchronization units (talkspurts) lasts
600 ms, the receiver may adjust it to, say, 500 ms without this being
noticed by the listener.
_______ __________ refers to other protocols and mechanisms that may be
needed to provide a useable service. In particular, for multimedia
conferences, a conference control application may distribute encryption and
authentication keys, negotiate the encryption algorithm to be used, and
determine the mapping from the RTP format field to the actual data format
used. For simple applications, electronic mail or a conference database may
also be used. The specification of such mechanisms is outside the scope of
this memorandum.
4 Byte Order, Alignment, and Reserved Values
All integer fields are carried in network byte order, that is, most
significant byte (octet) first. This byte order is commonly known as
big-endian. The transmission order is described in detail in [2], Appendix
A. Unless otherwise noted, numeric constants are in decimal (base 10).
Numeric constants prefixed by '0x' are in hexadecimal.
Fields within the fixed header and within options are aligned to the natural
length of the field, i.e., 16-bit words are aligned on even addresses,
32-bit long words are aligned at addresses divisible by four, etc. Octets
designated as padding have the value zero.
Textual information is encoded accorded to the UTF-2 encoding of the ISO
standard 10646 (Annex F) [3,4]. US-ASCII is a subset of this encoding and
requires no additional encoding. The presence of multi-octet encodings is
indicated by setting the most significant bit to a value of one. An octet
with a binary value of zero may be used as a string terminator for padding
purposes. However, strings are not required to be zero terminated.
5 Real-Time Data Transfer Protocol -- RTP
5.1 RTP Fixed Header Fields
The RTP header has the following format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| ChannelID |P|S| format | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 10]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
| timestamp (seconds) | timestamp (fraction) |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| options ... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
The first eight octets are present in every RTP packet and have the
following meaning:
protocol version: 2 bits
Identifies the protocol version. The version number of the protocol
defined in this memo is one (1).
channel ID: 6 bits
The channel identifier field forms part of the tuple identifying a
channel (see definition in Section 3) to provide an additional level of
multiplexing at the RTP layer. The channel ID field is convenient
if several different channels are to receive the same treatment by
the underlying layers or if a profile allows for the concatenation of
several RTP packets on different channels into a single packet of the
underlying protocol layer.
option present bit (P): 1 bit
This flag has a value of one (1) if the fixed RTP header is followed by
one or more options and a value of zero otherwise.
end-of-synchronization-unit (S): 1 bit
This flag has a value of one in the last packet of a synchronization
unit, a value of zero otherwise.[As shown in Appendix A, the beginning
of a synchronization unit can be readily established from this flag.
If this flag were to signal the beginning of a synchronization unit
instead, the end of a synchronization unit could not be established in
real time.]
format: 6 bits
The format field forms an index into a table defined through the
RTCP FMT option or non-RTP mechanisms (see Section 3). The
mapping establishes the format of the RTP payload and determines its
interpretation by higher layers. If no mapping has been defined in
this manner, a standard mapping is specified by the companion profile
document, RFC TBD. Also, default formats may be defined by the current
edition of the Assigned Numbers RFC.
sequence number: 16 bits
The sequence number counts RTP packets. The sequence number increments
by one for each packet sent. The sequence number may be used by
the receiver to detect packet loss, to restore packet sequence and to
identify packets to the application.
timestamp: 32 bits
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 11]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
The timestamp reflects the wall clock time when the RTP packet was
generated. Several consecutive RTP packets may have equal timestamps
if they are generated at once. The timestamp consists of the middle 32
bits of a 64-bit NTP timestamp, as defined in RFC 1305 [5]. That is,
it counts time since 0 hours UTC, January 1, 1900, with a resolution
of 65536 ticks per second. (UTC is Coordinated Universal Time,
approximately equal to the historical Greenwich Mean Time.) The RTP
timestamp wraps around approximately every 18 hours.
The timestamp of the first packet within a synchronization unit is
expected to closely reflect the actual sampling instant, measured
by the local system clock. If possible, the local system clock
should be controlled by a time synchronization protocol such as NTP.
However, it is allowable to operate without synchronized time on
those systems where it is not available, unless a profile or session
protocol requires otherwise. It is not necessary to reference the
local system clock to obtain the timestamp for the beginning of
every synchronization unit, but the local clock should be referenced
frequently enough so that clock drift between the synchronized system
clock and the sampling clock can be compensated for gradually. Within
one synchronization unit, it may be appropriate to compute timestamps
based on the logical timing relationships between the packets. For
audio samples, for example, the nominal sampling interval may be used.
5.2 The RTP Options
The packet header may be followed by options and then the payload.
Each option consists of the F (final) bit, the option type designation,
a one-octet length field denoting the total number of 32-bit words
comprising the option (including F bit, type and length), followed by any
option-specific data. The last option before the payload has the F bit set
to one; for all other options this bit has a value of zero.
An application may discard options with types unknown to it. Private
and experimental options should use option types 64 through 127. Fields
designated as ``reserved'' or ``R'' are set aside for future use; they
should be set to zero by senders and ignored by receivers.
Unless otherwise noted, each option may appear only once per packet. Each
packet may contain any number of options. Options may appear in any order,
unless specifically restricted by the option description. In particular,
the position of some security options may have significance.
The RTP options have the following type values:
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 12]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
name value
CSRC 0
SSRC 1
SDST 2
BOS 3
ENC 8
MIC 9
MICA 10
MICK 11
MICS 12
5.2.1 CSRC: Content source identifiers
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| CSRC | length | content source identifier ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The content source option, inserted only by bridges, lists all sources that
contributed to the packet. For example, for audio packets, all sources that
were mixed together to create this packet are enumerated, allowing correct
talker indication at the receiver. Each CSRC option may contain one or more
16-bit content source identifiers. The identifier values must be unique for
all content sources received from a particular synchronization source on a
particular channel; the value of binary zero is reserved and may not be
used. If the number of content sources is even, the two octets needed to
pad the list to a multiple of four octets are set to zero. There should
only be a single CSRC option within a packet. If no CSRC option is present,
the content source identifier is assumed to have a value of zero. CSRC
options are not modified by RTP-level translators.
A conformant RTP implementation does not have to be able to generate or
interpret the CSRC option.
5.2.2 SSRC: Synchronization source identifier
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| SSRC | length = 1 | identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The SSRC option may be inserted by RTP-level translators, end systems and
bridges. It is typically used only by translators, but it may be used
by an end system application to distinguish several sources sent with the
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 13]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
same transport source address. Multiple synchronization sources with the
same transport source address (e.g., the same IP address and UDP port)
must each insert a distinct SSRC identifier. Conversely, synchronization
sources that are distinguishable by their transport address do not require
the use of SSRC options. The SSRC value zero is reserved; the receiver
treats the packet as if the SSRC option were not present. If no SSRC
option is present, the transport source address is assumed to indicate the
synchronization source. There must be no more than one SSRC option per
packet; thus, a translator must remap the SSRC identifier of an incoming
packet into a new, locally unique SSRC identifier. The SSRC option can be
viewed as an extension of the source port number in protocols like UDP,
ST-II or TCP.
An RTP receiver must support the SSRC option. RTP senders only need to
support this option if they intend to send more than one source to the same
channel using the same source port.
5.2.3 BOS: Beginning of synchronization unit
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| BOS | length = 1 | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The sequence number within the options contains the sequence number of the
first packet within the current synchronization unit. The BOS option allows
the receiver to compute the offset of a packet with respect to the beginning
of the synchronization unit, even if the last packet of the previous
synchronization unit was lost. It is expected that many applications will
be able to tolerate such a loss, and so will not use the BOS option but rely
on the S bit.
5.3 Reverse-Path Option
With two-party (unicast) communications, having a receiver of data relay
back control information to the sender is straightforward. Similarly, for
multicast communications, control information can easily be sent to all
members of the group. It may, however, be desirable to send a unicast
message to a single member of a multicast group, for example to request
retransmission of a particular data frame or to request/send a reception
quality report. For this particular use, RTP includes a mechanism for
sending so-called reverse RTP packets. The format of reverse RTP packets is
exactly the same as for regular RTP packets and they can make use of all
the options defined in this memorandum, except SSRC, as appropriate. The
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 14]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
support for and semantics of particular options are to be specified by a
profile. Reverse RTP packets travel through the same translators as forward
RTP packets. A site distinguishes reverse RTP packets from forward RTP
packets by their arrival port. Reverse RTP packets arrive on the same
port that the site uses as a source port for forward (data) RTP packets.
Only reverse RTP packets carry the SDST option; if RTP packets are carried
directly within IP or other network-layer protocols, the presence of the
SDST option signals that the packet is a reverse RTP packet.
A receiver of reverse RTP packets cannot rely on sequence numbers being
consecutive, as a sender is allowed to use the same sequence number space
while communicating through this reverse path with several sites. In
particular, a receiver of reverse RTP packets cannot tell by the sequence
numbers whether it has received all reverse RTP packets sent to it. The
sequence number space of reverse RTP packets has to be completely separate
from that used for RTP packets sent to the multicast group. If the
same sequence number space were used, the members of the multicast group
not receiving reverse RTP packets would detect a gap in their received
sequence number space. The sender of reverse RTP packets should ensure
that sequence numbers are unique, modulo wrap-around, so that they can,
if necessary, be used for matching request and response. (Currently,
no such request-response mechanism has been defined.) As a hypothetical
example, consider defining a request to pan the remote video camera.
After completing the request, the receiver of the request would send a
generic acknowledgement containing the sequence number of the request to
the requestor as an option (not as the packet sequence number in the fixed
header).
The timestamp should reflect the approximate sending time of the packet.
The channel identifier must be the same as that used in the corresponding
forward RTP packets.
If many receivers send a reverse RTP packet in response to a stimulus in
the data stream, the simultaneous delivery of a large number of packets
back to the data source can cause congestion for both the network and the
destination (this is known as an ``ack implosion''). Thus reverse RTP
packets should be used with care, perhaps with mechanisms such as response
rate limiting and random delays to spread out the simultaneous delivery.
5.3.1 SDST: Synchronization destination identifier
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| SDST | length = 1 | identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The SDST option is only inserted by RTP end systems and bridges if they want
to send unicast information to a particular site within the multicast group.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 15]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
Packets containing an SDST option must not contain an SSRC option and vice
versa. Packets containing a SDST option are always reverse RTP packets.
The SDST option may be used to distinguish reverse RTP packets from forward
RTP packets if the port-number mechanism described earlier in this section
is not available, e.g., because RTP packets are carried directly within IP
packets, without UDP.
If a forward RTP packet carries SSRC identifier X when sent from A to
B, where A and B may be either two translators or an end system and a
translator, the unicast reverse RTP packet will carry an SDST option with
identifier X from B to A.
Consider the topology shown in Fig. 1. Assume that all forward RTP packets
are addressed to destination port 8000. For the case that B1 wants to send
a reverse packet to E1, B1 simply sends to the source address and port, that
is, port 17 in this example. E1 can tell by the arrival on port 17 that the
packet is a reverse packet rather than a regular (forward) packet.
The mechanism is somewhat more complicated when translators intervene. We
focus on end system E7. E7 receives, say, video from a range of sources,
E1 through E6 as indicated by the arrows. The transmission from T2 to
E7 could be either multicast or unicast. Assume that E7 wants to send a
retransmission request, a request to pan the camera, etc., to end system E4
and only to E4. E7 may not be able to directly reach E4, as E4 may be using
a network protocol unknown to E7 or be located behind a firewall. According
to the figure, video transmissions from E4 reach E7 through T2 with source
port 63 and SSRC identifier 3. For the reverse message, E7 sends a message
to T2, with destination port 63 and SDST identifier 3. T2 can look up in
its table that it sends forward data coming from T1 with that identifier
3. T2 also knows that those messages from T1 carry SSRC 2 and arrive
with source port 28. Just like E7, T2 places the SSRC identifier, 2 in
this case, into the SDST option and forwards the packet to T1 at port 28.
Finally, translator T1 consults its table to find that it labels packets
coming from E4, port 47 with SSRC value 2 and thus knows to forward the
reverse packet to E4, port 47. T1 can either place SDST value zero or no
SDST option into that packet. Note that E4 cannot directly determine that
E7 sent the reverse packet, rather than, say, E6. If that is important, a
global identifier as defined for the QOS option needs to be included in the
reverse packet.
Only applications that need to send or receive reverse control RTP packets
need to implement the SDST option.
5.4 Security Options
The security options below offer message integrity, authentication and
privacy and the combination of the three. Support for the security
options is not mandatory, but see the discussion for the ENC option. The
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 16]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
four message integrity check options --- MIC, MICA, MICK and MICS --- are
mutually exclusive, i.e., only one of them should be used in a single RTP
packet.
Combinations of one of the message integrity check options (MIC, MICA, MICK,
or MICS) and the encryption (ENC) option described below can be used to
provide a variety of security services:
confidentiality: Confidentiality means that only the intended receiver(s)
can decode the received RTP packets; for others, the RTP packet
contains no useful information. Confidentiality of the content is
achieved by encryption. The presence of encryption and the encryption
initialization vector is indicated by the ENC option.[For efficiency
reasons, this specification does not insist that content encryption
only be used in conjunction with message integrity and authentication
mechanisms. In most cases, it will be obvious to the person receiving
the data if he or she does not possess the right encryption key.]
authentication and message integrity: In combination with certificates(2),
the receiver can ascertain that the claimed originator is indeed the
originator of the data (authentication) and that the data has not
been altered after leaving the sender (message integrity). These
two security services are provided by the message integrity check
options. Certificates for MICA must be distributed through means
outside of RTP. The services offered by MICA and MIC/MICK/MICS differ:
With MIC/MICK/MICS, the receiver can only verify that the message
originated within the group holding the secret key, rather than
authenticate the sender of the message, while the MICA option affords
true authentication of the sender.
authentication, message integrity, and confidentiality: By carrying both
the message integrity check and ENC option in RTP packets, the
authenticity, message integrity and confidentiality of the packet can
be assured (subject to the limitations discussed in the previous
paragraph).
The message integrity check is applied first to all parts of the
outgoing packet to be authenticated, and the message integrity check
option is prepended to those parts. Then the packet including the
message integrity check option is encrypted using the shared secret
key. The ENC option must be followed immediately by the message
integrity check option, without any other options in between. The
receiver first decrypts the octets following the ENC option and then
authenticates the decrypted data using the signature contained in the
message integrity check option.
For this combination of security features and group authentication, the
------------------------------
2. For a description of certificates see, for example, RFC 1422 or [6].
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 17]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
combination ENC and MIC is recommended (instead of MICS or MICK), as it
yields the lowest processing overhead.
A message integrity check option followed by an ENC option should not be
used. All message integrity check options are computed over the fixed
header, the first four octets of the message integrity check option and the
data, that is, the remaining header options and payload that follow the
message integrity check option. The MICK option includes the whole MICK
option itself in the message integrity check. The fixed header is protected
to foil replay attacks and reassignment to a different channel.
The message integrity check options and the ENC option shall not cover
the SSRC and SDST options, i.e., SSRC and SDST must be inserted between
the fixed header and the ENC or message integrity check options; SSRC and
SDST are subject to change by translators that likely do not possess the
necessary descriptor table (see below) and encryption keys. Translators
that have the necessary keys and descriptor translation table may modify
the contents of the RTP packet, unless the MICA option is used (see MICA
description in Section 5.4.3).
All security options carry a one-octet descriptor field. This descriptor
is an index into two tables, one for the message integrity check options,
one for the ENC option, established by non-RTP means, containing digest
algorithms (MD2, MD5, etc.), encryption algorithms (DES variants) and
encryption keys or shared secrets (for the MICK option). All sources
within the same channel share the same table; this reduces per-site state
information. The descriptor value may change during a session, for example,
to switch to a different encryption key.
The descriptor value zero selects a set of default algorithms, namely, MD5
for the message digest algorithm, DES CBC for the encryption algorithm.
5.4.1 ENC: Encryption
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| ENC | length = 3 | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DES (CBC) initialization vector, bytes 0 through 3 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DES (CBC) initialization vector, bytes 4 through 7 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| ENC | length = 1 | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 18]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
All packet data after this option is encrypted, using the encryption key and
symmetric encryption algorithm specified by the descriptor field. Every
encrypted RTP packet must contain this option. Note that the fixed header
is specifically not encrypted because some fields must be interpreted by
translators that will not have access to the key. The descriptor value may
change over time to accommodate varying security requirements or limit the
amount of ciphertext using the same key. For example, in a job interview
conducted across a network, the candidate and interviewers could share one
key, with a second key set aside for the interviewers only. For symmetric
keys, source-specific keys offer no advantage.
The descriptor value zero is reserved for a default mode using the Data
Encryption Standard (DES) algorithm in CBC (cipher block chaining) mode,
as described in Section 1.1 of RFC 1423 [7]. The padding specified
in that section is to be used. The 8-octet initialization vector (IV)
may be carried unencrypted within the ENC option, generated anew for each
packet. If the ENC option does not contain an initialization vector
(indicated by an option length of one), the fixed RTP header is used as the
initalization vector. (Using the fixed RTP header as the initialization
vector avoids regenerating the initialization vector for each packet and
incurs less header overhead.) For details on the tradeoffs for CBC
initialization vector use, see [8]. Support for encryption is not required.
Implementations that do not support encryption should recognize the ENC
option so that they can avoid processing encrypted messages and provide
a meaningful failure indication. Implementations that support encryption
should, at the minimum, always support the DES CBC algorithm.
5.4.2 MIC: Messsage integrity check
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MIC | length | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| message digest (unencrypted) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The MIC option option is used only in combination with the ENC
option immediately preceding it to provide privacy and group membership
authentication. The message integrity check uses the digest algorithm
specified by the descriptor field. (A message digest is a cryptographic
hash function that transforms a message of any length to a fixed-length
byte string, where the fixed-length string has the property that it is
computationally infeasible to generate another, different message with the
same digest.) The value zero implies the use of the MD5 message digest.
Note that the MIC option is not separately encrypted.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 19]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
5.4.3 MICA: Message integrity check, asymmetric encryption
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MICA | length | message digest ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| (asymmetrically encrypted) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Currently, only the use of the MD2 and MD5 message digest algorithms is
defined, as described in RFC 1319 [9] (as corrected in Section 2.1 of RFC
1423) and RFC 1321 [10], respectively. The MD2 and MD5 message digests are
16 octets long.
RFC 1423, Section 2.1:
To avoid any potential ambiguity regarding the ordering of the
octets of an MD2 message digest that is input as a data value
to another encryption process (e.g., RSAEncryption), the following
holds true. The first (or left-most displayed, if one thinks in
terms of a digest's ``print'' representation) octet of the digest
(i.e., digest[0] as specified in RFC 1319), when considered as
an RSA data value, has numerical weight 2**120. The last (or
right-most displayed) octet (i.e., digest[15] as specified in RFC
1319) has numerical weight 2**0.
RFC 1423, Section 2.2:
To avoid any potential ambiguity regarding the ordering of the
octets of an MD5 message digest that is input as an RSA data value
to the RSA encryption process, the following holds true. The
first (or left-most displayed, if one thinks in terms of a digest's
``print'' representation) octet of the digest (i.e., the low-order
octet of A as specified in RFC 1321), when considered as an RSA
data value, has numerical weight 2**120. The last (or right-most
displayed) octet (i.e., the high-order octet of D as specified in
RFC 1321) has numerical weight 2**0.
The message digest is encrypted, using asymmetric keys, with the sender's
private key using the algorithm described in Section 4.2.1 of RFC 1423:
As described in PKCS #1, all quantities input as data values to the
RSAEncryption process shall be properly justified and padded to the
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 20]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
length of the modulus prior to the encryption process. In general,
an RSAEncryption input value is formed by concatenating a leading
NULL octet, a block type BT, a padding string PS, a NULL octet, and
the data quantity D, that is, RSA input value = 0x00, BT, PS, 0x00,
D. To prepare a MIC for RSAEncryption, the PKCS #1 ``block type
01'' encryption-block formatting scheme is employed. The block
type BT is a single octet containing the value 0x01 and the padding
string PS is one or more octets (enough octets to make the length
of the complete RSA input value equal to the length of the modulus)
each containing the value 0xFF. The data quantity D is comprised of
the MIC and the MIC algorithm identifier.
The encoding is described in detail in RFC 1423. For encrypting MD2 and
MD5, the data quantity D comprises the 16-octet checksum, preceded by the
binary sequences shown here in hexadecimal: 0x30, 0x20, 0x30, 0x0C, 0x06,
0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, 0x04, 0x10
for MD2 and 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86,
0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10 for MD5.
Contrary to what is specified in RFC 1423 for privacy enhanced mail, the
asymmetrically signed MIC is carried in binary, ___ represented in the
printable encoding of RFC 1421, Section 4.3.2.4. The encrypted length of
the signature will be equal to the modulus of the RSA encryption used,
rounded to the next integral octet count. The modulus and public key are
conveyed to the receivers by non-RTP means. Asymmetric keys are used since
symmetric keys would not allow authentication of the individual source in
the multicast case.
The signature is padded as necessary. The value of the padding is left
unspecified. The number of non-padding bits within the signature is known
to the receiver as being equal to the key length. The MIC algorithm is
identified through the octets prepended to the actual 16-octet signature.
A translator is not allowed to modify the parts of an RTP packet covered
by the MICA option as the receiver would have no way of establishing the
identity of the translator and thus could not verify the integrity of the
RTP packet.
Support for sending or interpreting MICA options is not required.
5.4.4 MICK: Message integrity check, keyed
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MICS | length | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 21]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
| message digest (symmetrically encrypted) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This message integrity check option does not require encryption. In
addition to the RTP packet parts to be included in the message digest
according to the introduction to this section, the shared secret is placed
in the MICK option and included in the message digest. The shared secret is
equivalent to the key used for the MICS and ENC options, but is 16 octets
long, padded if needed with binary zeroes. The shared secret in the MICK
option is then replaced by the computed 16-octet message digest.
The receiver stores the message digest contained in the MICK option,
replaces it with the shared secret key and computes the message digest in
the same manner as the sender. If the RTP packet has not been tampered
with and has originated with one of the holders of the shared secret, the
computed message digest will agree with the digest found on reception in
the MICS option.[The message integrity check follows the practice of SNMP
Version 2, as described in RFC 1446, Section 1.5.1. The MICS option itself
is covered by the digest in order to detect tampering with the descriptor
field itself. Using the secret key in the signature instead of encrypting
the MD5 message digest avoids the use of an encryption algorithm when only
authentication is desired. However, the security of this approach has not
been as well established as the authentication based on encrypting message
digests used in the MICS, MIC and MICA options.]
5.4.5 MICS: Message integrity check, symmetric-key encrypted
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MICS | length | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| message digest (symmetrically encrypted) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This message integrity check encrypts the message digest using DES ECB mode
as described in RFC 1423, Section 3.1.
6 Real Time Control Protocol --- RTCP
The real-time control protocol (RTCP) conveys minimal control and advisory
information during a session. It provides support for ``loosely
controlled'' sessions, i.e., where participants enter and leave without
membership control and parameter negotiation. The services provided by RTCP
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 22]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
services augment RTP, but an end system does not have to implement RTCP
features to participate in sessions. There is one exception to this rule:
if an application sends FMT options, the receiver has to decode these in
order to properly interpret the RTP payload. RTCP does not aim to provide
the services of a session control protocol and does not provide some of
the services desirable for two-party conversations. If a session control
protocol is in use, the services of RTCP should not be required. (As of the
writing of this document, a session or conference control protocol has not
been specified within the Internet.)
RTCP options share the same structure and numbering space as RTP options,
which are described in Section 5. Unless otherwise noted, control
information is carried periodically as options within RTP packets, with
or without payload. RTCP packets are sent to all members of a session.
These packets are part of the same sequence number space as RTP packets not
containing RTCP options. The period should be varied randomly to avoid
synchronization of all sources and its mean should increase with the number
of participants in the session to limit the growth of the overall network
and host interrupt load. The length of the period determines, for example,
how long a receiver joining a session has to wait until it can identify the
source. A receiver may remove from its list of active sites a site that it
has not been heard from for a given time-out period; the time-out period may
depend on the number of sites or the observed average interarrival time of
RTCP messages. Note that not every periodic message has to contain all RTCP
options; for example, the EMAIL part within the SDES option might only be
sent every few messages. RTCP options should also be sent when information
carried in RTCP options changes, but the generation of RTCP options should
be rate-limited.
The option types are defined below:
6.1 FMT: Format description
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| FMT | length |R|R| format | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| format-dependent data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
format: 6 bits
The format field corresponds to the index value from the format field
in the RTP fixed header, with values ranging from 0 to 63.
Format-dependent data: variable length
Format-dependent data may or may not appear in a FMT option. It is
passed to the next layer and not interpreted by RTP.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 23]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
A FMT mapping changes the interpretation of a given format value carried in
the fixed RTP header starting at the packet containing the FMT option. The
new interpretation applies only to packets from the same synchronization
source as the packet containing the FMT option. If format mappings are
changed through the FMT option, the option should be sent periodically as
otherwise sites that did not receive the FMT option due to packet loss or
joining the session after the FMT option was sent will not know how to
interpret the particular format value.
6.2 SDES: Source descriptor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| SDES | length | source identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = ADDR | length | reserved | address type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| network-layer address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = ADDR | length = 2 | reserved | addr. type = 1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = PORT | length = 1 | port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = PORT | length > 1 | reserved | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| port ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = CNAME | length | user and domain name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = EMAIL | length | electronic mail address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 24]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
| type = NAME | length | common name of source ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = LOC | length | geographic location of site ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = TXT | length | text describing source ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The SDES option provides a mapping between a numeric source identifier and
one or more items identifying the source.[Several attributes were combined
into one option so that the receiver does not have to perform multiple
mappings from identifiers to site data structures.] For those applications
where the size of a multi-item SDES option would be a concern, multiple SDES
options may be formed with subsets of the items to be sent in separate
packets.
A bridge uses an identifier value of zero within the SDES option to refer
to itself rather than content sources bridged by it. For each content
source, a bridge forwards the SDES information received from that source,
but changes the SDES source identifier to the value used in the CSRC option
when identifying that content source. A bridge that contributes local data
to outgoing packets should select another non-zero source identifier for
that traffic and send CSRC and SDES options for it.
Translators do not modify or insert SDES options. The end system performs
the same mapping it uses to identify the content sources (that is,
the combination of network source, synchronization source and the source
identifier within this SDES option) to identify a particular source. SDES
information is specific to a particular channel, unless a profile or a
higher-layer control protocol defines that all packets with the same source
identifier (network and transport-level source addresses and the optional
SSRC value) from a set of channels defined by the control protocol are
described by the same SDES.
Currently, the items listed in Table 2 are defined. Each has a structure
similar to that of RTCP and RTP options, that is, a type field followed by
a length field, measured in multiples of four octets. No final bit (see
Section 5.2) is needed since the overall length is known. Text items are
encoded according to the rules in Section 4. All of the SDES items are
optional; however, if quality-of-service monitoring is to be used, one ADDR
item and the PORT item are mandatory, as described for the QOS option. Only
the TXT item is expected to change during the duration of a session. Option
types 128 through 255 are reserved for private or experimental extensions.
Items are padded with the binary value zero to the next multiple of four
octets. Each item may appear only once unless otherwise noted.
A more detailed description of the content of some of these items follows:
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 25]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
type value description
ADDR 1 network address of source
PORT 2 source port
CNAME 4 canonical user and host identifier,
e.g., ``doe@sleepy.megacorp.com'' or
``sleepy.megacorp.com''
EMAIL 5 user's electronic mail address,
e.g., ``John.Doe@megacorp.com''
NAME 6 common name describing the source,
e.g.,``John Doe, Bit Recycler, Megacorp''
LOC 8 geographic user location,
e.g., ``Rm. 2A244, Murray Hill, NJ''
TXT 16 text describing the source,
e.g., ``out for lunch''
Table 2: Summary of SDES items
ADDR: This item contains the network address of the source, for example,
the IP version 4 address or an NSAP. The address is carried in binary
form, not as ``dotted decimal'' or similar human-readable form. A
source may send several network addresses, but only one for each
address type value. Address types are identified by the Domain Name
Service Resource Record (RR) type, as specified in the current edition
of the Assigned Numbers RFC.
PORT: If the length field is one, the transport selector, such as the UDP
port number, is carried as octets three and four in the first and only
word of the item. If the length field is greater than one, octets
three and four are zero and the transport selector appears in words
two and following of this item, in network byte order. The figure
shows the use of the PORT item for the TCP and UDP protocols. There
must be no more than one PORT item in an SDES option. The PORT
item should immediately precede any ADDR items.[Multiple concurrent
transport addresses are not meaningful. The ordering simplifies
processing at the receiver, as the consecutive octet string of PORT
followed by the first ADDR can be used as a globally unique identifier.
The transport protocol does not need to be identified, as the receiver
will only see one type of transport protocol for a session.]
CNAME: The CNAME item must have the format ``user@host'' or ``host'', where
``host'' is the fully qualified domain name of the host from which the
real-time data originates, formatted according to the rules specified
in RFC 1034, RFC 1035 and Section 2.1 of RFC 1123. The ``host''
form may be used if a user name is not available, for example on
single-user systems. The user name should be in a form that a program
such as ``finger'' or ``talk'' could use, i.e., it typically is the
login name rather than the ``real life'' name. Note that the host
name is not necessarily identical to the electronic mail address of the
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 26]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
participant. The latter is provided through the EMAIL item.
LOC: Depending on the application, different degrees of detail are
appropriate for this item. For conference applications, a string
like ``Murray Hill, New Jersey'' may be sufficient, while, for an
active badge system, strings like ``Room 2A244, AT&T BL MH'' might be
appropriate. The degree of detail is left to the implementation and/or
user, but format and content may be prescribed by a profile.
6.3 BYE: Goodbye
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| BYE | length = 1 | content source identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The BYE option indicates that a particular session participant is no longer
active. A bridge sends BYE options with a (non-zero) content source value.
An identifier value of zero indicates that the source indicated by the
synchronization source (SSRC) option and transport address is no longer
active. If a bridge shuts down, it should first send BYE options for all
content sources it handles, followed by a BYE option with an identifier
value of zero. Each RTCP message can contain one or more BYE messages.
Multiple identifiers in a single BYE option are not allowed, to avoid
ambiguities between the special value of zero and any necessary padding.
6.4 QOS: Quality of service measurement
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| QOS | length | reserved | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| packets expected |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| packets received |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| minimum delay (seconds) | minimum delay (fraction) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| maximum delay (seconds) | maximum delay (fraction) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| average delay (seconds) | average delay (fraction) |
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 27]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = PORT | length | transport address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = ADDR | length | reserved | address type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| network-layer address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The QOS option conveys statistics of a single synchronization source
belonging to the channel identified by the multicast address, destination
port and channel identifier. The synchronization source is identified by
appending the first of the ADDR items together with the PORT item from the
SDES option. These SDES items are appended directly to the fixed-length
part of the QOS option, with PORT preceding ADDR. For a description of these
items, see the SDES option.
If the QOS option is used in reverse control packets, the destination port
number identifies the channel, along with the channel identifier. For that
reason, every multicast group should be associated with a unique source
port.
The other fields of the option contain the number of packets received, the
number of packets expected, the minimum delay, the maximum delay and the
average delay. The expected number of packets may be computed according to
the algorithm in Section A.5. The delay measures are in units of 1/65536 of
a second, that is, with the same resolution as the timestamp in the fixed
RTP header.
A single RTCP packet may contain several QOS options. It is left to the
implementor to decide how often to transmit QOS options and which sources
are to be included.
7 Security Considerations
Without the use of the security options described in section 5.4, RTP
suffers from the same security deficiencies as the underlying protocols, for
example, the ability of an impostor to fake source or destination network
addresses, or to change header or payload without detection. For example,
the SDES fields may be used to impersonate another participant.
IP multicast provides no direct means for a sender to know all the receivers
of the data sent. RTP options make it easy for all participants in
a session to identify themselves; if deemed important for a particular
application, it is the responsibility of the application writer to make
listening without identification difficult. It should be noted, however,
that privacy of the payload can generally be assured only by encryption.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 28]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
The periodic transmission of session messages may make it possible to detect
denial-of-service attacks, as the receiver can detect the absence of these
expected messages.
Unlike for other data, ciphertext-only attacks may be more _________ for
compressed audio and video sources. Such data is very close to white
noise, making statistics-based ciphertext-only attacks difficult. Even
without message integrity check options, it may be difficult for an
attacker to detect automatically when he or she has found the secret
cryptographic key since the bit pattern after correct decryption may
not look significantly different from one decrypted with the wrong key.
However, the session information is more or less constant and predictable,
allowing known-plaintext attacks. Chosen-plaintext attacks appear, in
general, to be difficult.
The integrity of the timestamp in the fixed RTP header can be protected by
the message integrity options. If clocks are known to be synchronized, an
attacker only has a very limited time window of maybe a few seconds every 18
hours to replay recorded RTP without detection by the receiver.
Key distribution and certificates are outside the scope of this
document.
8 RTP over Network and Transport Protocols
This section describes issues specific to carrying RTP packets within
particular network and transport protocols.
8.1 Defaults
The following rules apply unless superseded by protocol-specific subsections
in this section. The rules apply to both forward and reverse RTP packets.
RTP packets contain no length field or other delineation, so that a framing
mechanism is needed if they are carried in underlying protocols that
provide the abstraction of a continuous bit stream rather than messages
(packets). TCP is an example of such a protocol. Framing is also needed
if the underlying protocol may contain padding so that the extent of the
RTP payload cannot be determined. For these cases, each RTP packet is
prefixed by a 32-bit framing field containing the length of the RTP packet
measured in octets, not including the framing field itself. If an RTP
packet traverses a path over a mixture of octet-stream and message-oriented
protocols, each RTP-level bridge between these protocols is responsible for
adding and removing the framing field.
A profile may determine that this framing method is to be used even when RTP
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 29]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
is carried in protocols that do provide framing in order to allow carrying
several RTP packets in one lower-layer protocol data unit, such as a UDP
packet. Carrying several RTP packets in one network or transport packet
reduces header overhead and may simplify synchronization between different
streams.
8.2 ST-II
When used in conjunction with RTP, ST-II [11] service access ports (SAPs)
have a length of 16 bits. The next protocol field (``NextPCol'', Section
4.2.2.10 in RFC 1190) is used to distinguish two encapsulations of RTP over
ST-II. The first uses NextPCol value TBD and directly places the RTP packet
into the ST-II data area. If NextPCol value TBD is used, the RTP header is
preceded by a 32-bit header shown below. The octet count determines the
number of octets in the RTP header and payload to be checksummed. The
16-bit checksum uses the TCP and UDP checksum algorithm.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| count of octets to be checked | check sum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP packet (fixed header, options and payload) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A Implementation Notes
We describe aspects of the receiver implementation in this section. There
may be other implementation methods that are faster in particular operating
environments or have other advantages. These implementation notes are for
informational purposes only.
The following definitions are used for all examples; the structure
definitions are valid for 32-bit big-endian architectures only. Bit fields
are assumed to be packed tightly, with no additional padding.
#include <sys/types.h>
typedef double CLOCK_t;
typedef enum {
RTP_CSRC = 0,
RTP_SSRC = 1,
RTP_SDST = 2,
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 30]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
RTP_BOS = 3,
RTP_ENC = 8,
RTP_MIC = 9,
RTP_MICA = 10,
RTP_MICK = 11,
RTP_MICS = 12,
RTP_FMT = 32,
RTP_SDES = 34,
RTP_BYE = 35,
RTP_QOS = 36
} rtp_option_t;
typedef struct {
unsigned int ver:2; /* version number */
unsigned int channel:6; /* channel id */
unsigned int o:1; /* option present */
unsigned int s:1; /* sync bit */
unsigned int format:6; /* content type */
u_short seq; /* sequence number */
u_long ts; /* time stamp */
} rtp_hdr_t;
typedef union {
struct {
int final:1; /* final option */
int type:7; /* option type */
u_char length; /* length, including type/length */
short id[1];
} csrc;
/* ... */
} rtp_t;
A.1 Timestamp Recovery
For some applications it is useful to have the receiver reconstruct the
sender's high-order bits of the NTP timestamp from the received 32-bit
RTP timestamp. The following code uses double-precision floating point
numbers for whole numbers with a 48-bit range. Other type definitions
of CLOCK_t may be appropriate for different operating environments, e.g.,
64-bit architectures or systems with slow floating point support. The
routine applies to any clock frequency, not just the RTP value of 65,536 Hz,
and any clock starting point. It will reconstruct the correct high-order
bits as long as the local clock now is within one half of wrap-around time
of the 32-bit timestamp, e.g., approximately 9.2 hours for RTP timestamps.
#include <math.h>
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 31]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
#define MOD32bit 4294967296.
#define MAX31bit 0x7fffffff
CLOCK_t clock_extend(ts, now)
u_long ts; /* in: timestamp, low-order 32 bits */
CLOCK_t now; /* in: current local time */
{
u_long high, low; /* high and low order bits of 48-bit clock */
low = fmod(now, MOD32bit);
high = now / MOD32bit;
if (low > ts) {
if (low - ts > MAX31bit) high++;
}
else {
if (ts - low > MAX31bit) high--;
}
return high * MOD32bit + ts;
} /* extend_timestamp */
Using the full timestamp internally has the advantage that the remainder of
the receiver code does not have to be concerned with modulo arithmetic. The
current local time does not have to be derived directly from the system
clock for every packet; a clock based on samples, e.g., incremented by the
nominal audio frame duration, is sufficient. The whole seconds within
NTP time stamps can be obtained by adding 2208988800 to the value of the
standard Unix clock (generated, for example, by the gettimeofday system
call), which starts from the year 1970. For the RTP time stamp, only the
least significant 16 bits of the second are used.
A.2 Detecting the Beginning of a Synchronization Unit
RTP packets contain a bit flag indicating the end of a synchronization unit.
The following code fragment determines, based on sequence numbers, if a
packet is the beginning of a synchronization unit. It assumes that the
packet header has been converted to host byte order.
static u_long seq_eos;
rtp_hdr_t *h;
static int flag;
if (h->s) {
flag = 1;
seq_eos = h->seq;
}
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 32]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
/* handle wrap-around of sequence number */
else if (flag && (h->seq - seq_eos < 32768)) {
flag = 0;
/* handle beginning of synchronization unit */
}
A.3 Demultiplexing and Locating the Synchronization Source
The combination of destination address, destination port and channel
identifier determines the channel. For each channel, the receiver maintains
a list of all sources, content and synchronization sources alike, in a table
or other suitable data structure. Synchronization sources are stored with
a content source value of zero. When an RTP packet arrives, the receiver
determines its network source address and port (from information returned
by the operating system), synchronization source (SSRC option) and content
source(s) (CSRC option). To locate the table entry containing timing
information, mapping from content descriptor to actual encoding, etc., the
receiver sets the content source to zero and locates a table entry based on
the triple (transport source address, and synchronization source identifier,
0).
The receiver identifies the contributors to the packet (for example, the
speaker who is heard in the packet) through the list of content sources
carried in the CSRC option. To locate the table entry, it matches on the
triple (network address and port, synchronization source identifier, content
source).
Note that since network addresses are only generated locally at the
receiver, the receiver can choose whatever format seems most appropriate for
matching. For example, a Berkeley Unix-based system may use struct sockaddr
data types if it expects network sources with non-IP addresses.
A.4 Parsing RTP Options
The following code segment walks through the RTP options, preventing
infinite loops due to zero and invalid length fields. Structure definitions
are valid for big-endian architectures only.
u_long len; /* length of RTP packet in bytes */
u_long *pt; /* pointer */
rtp_hdr_t *h; /* fixed header */
rtp_t *r; /* options */
if (h->o) {
for (pt = (u_long *)(h+1);; pt += r->csrc.length) {
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 33]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
r = (rtp_t *)pt;
/* invalid length field */
if ((char *)pt - (char *)h > len || r->csrc.length == 0) return -1;
switch(r->csrc.type) {
case RTP_BYE:
/* handle BYE option */
break;
case RTP_CSRC:
/* handle CSRC option */
break;
/* ... */
default:
/* undefined option */
break;
}
if (r->csrc.final) break;
}
}
A.5 Determining the Expected Number of RTP Packets
The number of packets expected can be computed by the receiver by tracking
the first sequence number received (seq0), the last sequence number
received, seq, and the number of complete sequence number cycles:
expected = cycles * 65536 + seq - seq0 + 1;
The cycle count is updated for each packet, where seq_prior is the sequence
number of the prior packet:
unsigned long seq, seq_prior;
if (seq - seq_prior > 65536)
cycle++;
else if (seq - seq_prior > 32768)
cycle--;
seq_prior = seq;
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 34]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
Acknowledgments
This memorandum is based on discussions within the IETF audio-video
transport working group chaired by Stephen Casner. The current protocol has
its origins in the Network Voice Protocol and the Packet Video Protocol
(Danny Cohen and Randy Cole) and the protocol implemented by the vat
application (Van Jacobson and Steve McCanne). Stuart Stubblebine (ISI)
helped with the security aspects of RTP. Ron Frederic (Xerox PARC) provided
extensive editorial assistance.
B Addresses of Authors
Stephen Casner
USC/Information Sciences Institute
4676 Admiralty Way
Marina del Rey, CA 90292-6695
telephone: +1 310 822 1511 (extension 153)
electronic mail: casner@isi.edu
Henning Schulzrinne
AT&T Bell Laboratories
MH 2A244
600 Mountain Avenue
Murray Hill, NJ 07974-0636
telephone: +1 908 582 2262
facsimile: +1 908 582 5809
electronic mail: hgs@research.att.com
References
[1] D. E. Comer, _______________ ____ ______, vol. 1. Englewood Cliffs,
New Jersey: Prentice Hall, 1991.
[2] J. Postel, ``Internet protocol,'' Network Working Group Request for
Comments RFC 791, Information Sciences Institute, Sept. 1981.
[3] International Standards Organization, ``ISO/IEC DIS 10646-1:1993
information technology -- universal multiple-octet coded character set
(UCS) -- part I: Architecture and basic multilingual plane,'' 1993.
[4] The Unicode Consortium, ___ _______ ________. New York, New York:
Addison-Wesley, 1991.
[5] D. L. Mills, ``Network time protocol (version 3) -- specification,
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 35]
INTERNET-DRAFT draft-ietf-avt-rtp-03.txt September 15, 1993
implementation and analysis,'' Network Working Group Request for
Comments RFC 1305, University of Delaware, Mar. 1992.
[6] S. Kent, ``Understanding the Internet certification system,'' in
___________ __ ___ _____________ __________ __________ ______, (San
Francisco, California), pp. BAB--1 -- BAB--10, Internet Society, Aug.
1993.
[7] D. Balenson, ``Privacy enhancement for internet electronic mail: Part
III: Algorithms, modes, and identifiers,'' Network Working Group
Request for Comments RFC 1423, IETF, Feb. 1993.
[8] V. L. Voydock and S. T. Kent, ``Security mechanisms in high-level
network protocols,'' ___ _________ _______, vol. 15, pp. 135--171,
June 1983.
[9] J. Kaliski, Burton S., ``The MD2 message-digest algorithm,'' Network
Working Group Request for Comments RFC 1319, RSA Laboratories, Apr.
1992.
[10] R. Rivest, ``The MD5 message-digest algorithm,'' Network Working Group
Request for Comments RFC 1321, IETF, Apr. 1992.
[11] C. Topolcic, S. Casner, C. Lynn, Jr., P. Park, and K. Schroder,
``Experimental internet stream protocol, version 2 (ST-II),'' Network
Working Group Request for Comments RFC 1190, BBN Systems and
Technologies, Oct. 1990.
H. Schulzrinne/S. Casner Expires 11/01/93 [Page 36]